package com.example.localexceptionhandler.exception;

import com.example.localexceptionhandler.enums.IExceptionEnum;

import java.util.Map;

/**
 * @version 1.0
 * @program: localexceptionhandler
 * @packageName: com.example.localexceptionhandler.exception
 * @className XJRuntimeException
 * @description: 全局异常处理
 * @author: xj
 * @create: 2021-01-18 11:18:34
 **/
public class XJRuntimeException extends RuntimeException implements IExceptionEnum {

    /**
     * 异常编码
     **/
    String code;
    /**
     * 异常名字
     **/
    String name;
    /**
     * 异常提示信息
     **/
    String displayName;
    /**
     * 异常上下文信息--可以在抛异常时人为往其中添加信息
     **/
    private Map<String, Object> contextMap;

    public XJRuntimeException(IExceptionEnum iExceptionEnum) {
        this.setCode(iExceptionEnum.getCode());
        this.setName(iExceptionEnum.getName());
        this.setDisplayName(iExceptionEnum.getDisplayName());
    }

    /**
     * 统一的页面返回对象: isSuccess/msg/code/XJRuntimeException/nowTime
     * 这里暂不处理
     **/



    public XJRuntimeException setContextMap(Map<String, Object> contextMap) {
        this.contextMap = contextMap;
        return this;
    }

    @Override
    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    @Override
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String getDisplayName() {
        return displayName;
    }

    public void setDisplayName(String displayName) {
        this.displayName = displayName;
    }

    public Map<String, Object> getContextMap() {
        return contextMap;
    }
}
